着色器最佳实践

在提供了可编程管道的 OpenGL ES 2.0 和更高版本中,您的应用程序会花费相当多的时间来执行着色器程序。尤其是对于手机和嵌入式硬件,着色器会是很多问题的根源,包括性能瓶颈和图形伪影。当正确使用时,着色器可以在 CPU 与 GPU 之间分配计算,从而帮助您实现出色的图形质量和性能。您必须决定是在片段着色器还是顶点着色器中执行计算。

系统会为每个顶点运行一次着色器程序中的顶点着色器,并为每个像素运行一次片段着色器。像素通常比顶点多一个数量级,因此最佳做法是在顶点着色器中执行尽可能多的计算,并将这些结果用在片段着色器中。

一些最常见的着色器瓶颈包括:

Kanzi Studio 分别为低精度 (ES2Low) 和高精度 (ES2High) 着色器配置文件提供了一个模板。这两个模板的主要区别在于,大多数计算(包括应用光源),对于高精度是在片段着色器(每个像素)中完成,但对于低精度是在顶点着色器中完成。根据图形硬件以及场景的复杂程度,可能会对性能产生非常大的影响。

对于手机和嵌入式设备,请对 [-2..2] 范围内的所有变量使用低精度。您可以降低着色器中使用的 uniform 和 varying 特性的精度,以优化性能。着色器中的精度因 GLES 而异。

着色器因材质而异。您可以直接在 Kanzi Studio 中直接修改着色器。请参阅编辑着色器

在您的 Kanzi 应用程序中使用着色器的最佳实践:

另请参阅

减少着色器切换

使用二进制着色器

优化片段着色器

并行加载资源

设置 Kanzi Engine 如何处理未使用的资源

编辑着色器

使用排序过滤器 (Sorting Filter)防止过度绘制

排除应用程序的性能问题

最佳实践